package com.hanamaki.study.day02;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.List;

public class FireFoxDriverTestNg01Alert {

    /* WebDriver 代表 浏览器 对象 */
    static WebDriver driver;

    @BeforeClass
    public void setUp() {
        /* 1. 注册驱动的位置  */
        System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe");

        /* 2, 注册驱动 */
        driver = new FirefoxDriver();

    }

    /**
     * 测试 普通弹窗 alert
     */
    @Test
    public void alert() {
        /* 打开网址测试  */
        driver.get("file:///E:/testhtml/exam/testSelenium.html");

        /* 想要操作  弹窗  首先需要  元素定位  */
        /* xpath  //input[@type='button'][1] */
        List<WebElement> elements = driver.findElements(By.xpath("//input[@type='button']"));

        /* 因为 我们使用是将网页中的 所有的 弹窗的按钮已经存放在集合 list 中 如果想要操作 alert弹窗 需要使用集合中的 第一个 元素 */
        elements.get(0).click();
        /* 如果在一个网页中 打开了 弹窗  如何操作 需要使用 switchTo方法 */
        /* 将光标切换到 弹窗中  */
        Alert alert = driver.switchTo().alert();
        String text = alert.getText();
        System.out.println("弹窗中的文本为：" + text);
//        alert.accept();
        /* 在一个普通弹窗中，没有 取消按键 */
        alert.dismiss();
    }


    /**
     * 测试 确认弹出框  Confirmation
     */
    @Test
    public void confirmation() {
        /* 打开网址测试  */
        driver.get("file:///E:/testhtml/exam/testSelenium.html");

        /* 想要操作  弹窗  首先需要  元素定位  */
        /* xpath  //input[@type='button'] */
        List<WebElement> elements = driver.findElements(By.xpath("//input[@type='button']"));

        /* 因为 我们使用是将网页中的 所有的 弹窗的按钮已经存放在集合 list 中 如果想要操作 alert弹窗 需要使用集合中的 第一个 元素 */
        elements.get(1).click();
        /* 如果在一个网页中 打开了 弹窗  如何操作 需要使用 switchTo方法 */
        /* 将光标切换到 弹窗中  */
        Alert alert = driver.switchTo().alert();
        String text = alert.getText();
        System.out.println("弹窗中的文本为：" + text);
//        alert.accept();
        /* 在一个普通弹窗中，没有 取消按键 */
        alert.dismiss();
    }

    /**
     * 测试 输入弹出框  Prompt
     */
    @Test
    public void prompt() throws InterruptedException {
        /* 打开网址测试  */
        driver.get("file:///E:/testhtml/exam/testSelenium.html");

        /* 想要操作  弹窗  首先需要  元素定位  */
        /* xpath  //input[@type='button'][1] */
        List<WebElement> elements = driver.findElements(By.xpath("//input[@type='button']"));

        /* 因为 我们使用是将网页中的 所有的 弹窗的按钮已经存放在集合 list 中 如果想要操作 alert弹窗 需要使用集合中的 第一个 元素 */
        elements.get(2).click();
        /* 如果在一个网页中 打开了 弹窗  如何操作 需要使用 switchTo方法 */
        /* 将光标切换到 弹窗中  */
        Alert alert = driver.switchTo().alert();
        String text = alert.getText();
        System.out.println("弹窗中的文本为：" + text);
        alert.sendKeys("hanamaki");
        Thread.sleep(3000);
//        alert.accept();
        /* 在一个普通弹窗中，没有 取消按键 */
        alert.dismiss();
    }


    @AfterClass
    public void close() {
        driver.close();
    }
}
